import os
import pandas as pd
from xlrd import open_workbook
from xlutils.copy import copy

def rename_sheets_based_on_a1(input_folder):
    # 遍历指定目录下的所有 .xls 文件
    for filename in os.listdir(input_folder):
        if filename.endswith(".xls"):
            file_path = os.path.join(input_folder, filename)
            
            try:
                # 读取工作簿中的 Sheet1 并获取 A1 单元格的值
                df = pd.read_excel(file_path, sheet_name="Sheet1", header=None)  # 设置 header=None 以确保读取原始数据
                a1_value = str(df.iloc[0, 0]).strip()  # 获取A1单元格的值并去除首尾空格
                
                if not a1_value:
                    print(f"警告: {filename} 的A1单元格为空，跳过此文件。")
                    continue
                
                # 移除特殊字符并确保工作表名合法
                clean_name = ''.join([c if c.isalnum() or c in (' ', '_') else '_' for c in a1_value])
                clean_name = clean_name[:31]  # Excel 工作表名称长度限制为31个字符
                
                # 打开原始工作簿并创建一个可写的副本
                rb = open_workbook(file_path, formatting_info=True)
                wb = copy(rb)
                
                # 修改工作表名称
                ws = wb.get_sheet(0)  # 假设我们要修改的是第一个工作表
                ws.name = clean_name
                
                # 保存更改后的文件
                wb.save(file_path)
                
                print(f"已将 {filename} 中的 Sheet1 重命名为 {clean_name}")
                    
            except Exception as e:
                print(f"处理文件 {filename} 时出错: {e}")

if __name__ == "__main__":
    input_folder = "/home/zgy/桌面/国家统计局" # 替换为你的实际文件夹路径
    
    rename_sheets_based_on_a1(input_folder)
